The present disclosure relates to a software customization technique that facilitates a customized application-delivery service for a software application and/or a user-specific customization of the software application.
Currently, mobile software-application publishers or developers typically deliver software applications to portable electronic devices (such as cellular telephones) via software-application stores. These software-application stores usually provide a wide range of services, including: user management, billing and subscriptions, application upgrades, advertising, etc. In addition, the software-application stores allow users of portable electronic devices to discover or identify software applications that are of interest, and then deliver these software applications to the users via their portable electronic devices.
In particular, these operations are a portion of an overall user-fulfillment process that begins with the software-application developers ‘publishing’ their software applications to the software-application stores. While the publication process can be specific to particular software-application stores, in general it involves the software-application developers providing one or more delivery packages to the software-application stores, as well as possibly some additional information that describes the content(s) of the delivery packages.
Next, during a subsequent discovery process, a user may browse or search through a software-application catalog to locate or identify a desired software application. In order to initiate or request delivery of the desired software application, the user usually provides information that identifies the software application to a delivery service, which is associated with the software-application store. For example, the user may provide a delivery token that represents the request to the delivery service. (Usually, the delivery token is provided to the user when they select one of the catalog items during the discovery process.)
Delivery tokens are typically implemented using universal resource identifiers (URIs). In particular, a delivery request may be implemented using an HTTP get command with a delivery URI identifying a requested resource (i.e., the software application).
However, this software-application delivery process is often inflexible or, at best, has limited flexibility. For example, as a delivery request token, either a URI typically cannot distinguish among different users or, if it includes user-specific information, is restricted to the information about the user that is known or available to a software-application store. Thus, a URI usually only addresses or specifies the software application that is to be delivered and/or a narrow subset of user-specific information. Consequently, the existing software-application publishing process for portable electronic devices typically cannot accommodate generalized controlled customization of the software application and/or the delivery process for a given user or group of users, such as controlled customization based on user-specific information that is available to parties other than the software-application store.
Instead, this problem of generalized customization is currently partially addressed by the users via a manual, post-delivery process. However, this process can be difficult for many users, which is a source of frustration that can reduce customer satisfaction and sales of software applications.
Alternatively, the software-application developers can create and publish multiple delivery packages along with corresponding metadata that allows users to discover the appropriate delivery package (i.e., a version of the software application) during the discovery process. However, this approach does not support may types of customization. In addition, it may introduce numerous additional problems, including: the cost of creating, testing, packaging, publishing and managing multiple versions of a software application. These additional problems can also reduce customer satisfaction because it can be challenging for users to find the appropriate version of the software application among the potentially large number of published versions, and because the additional complexity in the user-fulfillment process can provide numerous opportunities for errors.